This invention relates to print job streams and the optimization of print job tickets in print job streams.
FIG. 1A depicts the typical operational flow of a print job originating on a client operated computer and sent through a network supporting a printer server system of printer servers in the prior art.
Operation 100 starts the operations of this flowchart. Arrow 102 directs the flow of execution from operation 100 to operation 104. Operation 104 performs initiating a print job request by operating a client application on the client communicating-computer. Arrow 106 directs execution from operation 104 to operation 108. Operation 108 performs using a resident PDL driver on the client communicating-computer to create a PDL file of print job and optionally to create a job ticket. Arrow 110 directs execution from operation 108 to operation 112. Operation 112 performs sending the PDL file and the optional job ticket over the network to the printer server system. Arrow 114 directs execution from operation 112 to operation 116. Operation 116 performs spooling the print job based upon the received PDL file and the optional job ticket by the printer server system. Arrow 118 directs execution from operation 116 to operation 120. Operation 120 performs ripping the PDL file after using network to receive PDL file to create a ripped print job by printer server system. Arrow 122 directs execution from operation 120 to operation 124. Operation 124 performs compressing the ripped print job based upon the ripped print job to create a compressed print job by the printer server system. Arrow 126 directs execution from operation 124 to operation 128. Operation 128 performs sending the compressed (or uncompressed) print job to a printer by the printer server system. Arrow 130 directs execution from operation 128 to operation 132. Operation 132 terminates the operations of this flowchart.
Ripping as used herein includes operations creating a ripped PDL file. A ripped PDL file includes a raster ordered bit or byte image of each page of the document to be printed.
Consider the activities regarding the client communicating-computer. Operation 100 and arrow 102 can be seen as the client interaction operating the client communicating-computer. These can include starting and using a client application, often through stimulating the computer by tactile interaction including touching keys, in some cases, speaking to the computer, and in others, by various ways of scheduling a print job request to be initiated at a predetermined time.
Operation 104 performs initiating a print job request by operating a client application on the client communicating-computer. Examples of the variety of applications running on client communicating-computers which initiate print job requests include presentation development software such as Microsoft(trademark) Powerpoint(trademark), word processors, spreadsheets and graphics development software such as Adobe(trademark) Photoshop(trademark). Arrow 106 directs execution from operation 104 to operation 108 by sending a message to a resident thread implementing at least part of operation 108 in the real-time operating system of the client communicating-computer. The message transfer often involves either passing a pointer to a buffer or block transfer of data from one buffer to another.
Operation 108 performs using a resident PDL driver on the client communicating-computer to create a PDL file of print job and optionally to create a job ticket. Today, print job tickets typically include information such as the priority of the print job, who initiated it, and perhaps routing instructions as to where the print-out is to be sent. In certain instances, specific kinds of printers are specified, such as high-resolution color printers. Sometimes specific printers are designated. Arrow 110 directs execution from operation 108 to operation 112 by sending a message to a resident thread implementing at least part of operation 112 in the real-time operating system of the client communicating-computer. The message transfer often involves either passing a pointer to a buffer or block transfer of data from one buffer to another. Operation 112 performs sending the PDL file and the optional job ticket over the network to the printer server system.
Note that a PDL file is a term defined herein as a collection of data in a specific print definition language. The data collection is typically treated as a sequential stream of data which may be stored in computer memory, including as a file in a file management system using one or more disk drives, or transmitted sequentially to another system component. Standard PDL formats comply with print definition languages. These include the various versions of postscript (including encapsulated PostScript(copyright) .eps and regular PostScript(copyright) .ps), TIFF and PCL.
Arrow 114 directs execution from operation 112 to operation 116 by communicating the PDL file and optional job ticket across the network to operation 116 in the real-time operating system of a print server computer in the printer server system.
Consider the activities regarding the printer server computers of the printer server system. Operation 116 performs spooling the print job based upon the received PDL file and the optional job ticket by the printer server system. Arrow 118 directs execution from operation 116 to operation 120, which performs ripping the PDL file after using the network to receive PDL file to create a ripped print job by printer server system. Arrow 122 directs execution from operation 120 to operation 124, which performs compressing the ripped print job based upon the ripped print job to create a compressed print job by the printer server system. Arrow 126 directs execution from operation 124 to operation 128, which performs sending the compressed print job to a printer by the printer server system. Arrow 130 directs execution from operation 128 to operation 132, which terminates the operations of this flowchart, removing the print job from the ongoing activities monitored, controlled or performed by the printer server system.
The ripping 120 entails achieving several results. The first is determining how many pages are to be printed. This is required because at least postscript does not include this information anywhere in the contents of a PostScript(copyright) file. This is one of the most important pieces of information required to optimally direct 128 a print job to a printer.
It is important to note that this flowchart is highly concurrent in practice. Each of the operations described above operates concurrently with the other operations in certain circumstances. The same operation may be actively and independently proceeding on more than one computer simultaneously. In particular, it is frequently the case that multiple clients initiate print job requests operating distinct client communicating-computers.
It is also important to note that there is a degree of concurrency represented by the arrows of the flowchart. Arrows 106 and 110 act as data flows between the operations 104 and 108, all within the same client communicating-computer. The effect of this is near instantaneous communication, pointers to the data need only be set to achieve the communication of the print job from operation 104 to operation 108 in certain cases. More generally, block transfers are used with bus activities often running 100 million data transfers a second. Often, 32 and 128 bits are transferred in each data transfer. The resulting performance within a typical client communicating-computer of the late 1990""s is between 3 and 10 gigabits per second in block transfer mode. Recall that this is happening on many client communicating-computers network-connected to a printer server system. The typical network bandwidth is currently between 10 megabits to 1 gigabits per second. Assume 10 to 200 client communicating-computers connected by a gigabit per second network, and it becomes apparent that the network communications resource is easily over loaded if the print jobs being sent across the network are large.
The size of print jobs varies greatly, from a text mode e-mail which may amount to a few thousand bytes per print job page to graphical presentations, brochures or advertising copy, which often runs several megabytes per page. These graphical documents are often large, since they include books, newspapers, newsletters, promotional literature, which is being created at an ever-increasing rate. Such print jobs can often reach 500 megabytes in size. The tendency has been for these large print jobs to first xe2x80x9cfloodxe2x80x9d the network and then xe2x80x9ccripplexe2x80x9d the printers so that nothing else can be reasonably done while these large print jobs are being processed.
The number of pages is typically not known until the rip operation has been completed. However, printer server systems such as those shown in FIGS. 1B, 1C and 1D all show improved print job latency and throughput when this information can be used as early as arrow 114. What is needed is to perform part of the rip operation far earlier than at the printer server system, preferably in the client communicating-computers to determine the number of pages to be printed and the total size of the PDL file.
Before going further into the system level impact of this flowchart, it is useful to review some system block diagrams regarding printer server systems and their communications and interaction with both client communicating-computers and printers.
FIG. 1B depicts a block diagram of the conceptual components of network 3200 supporting communications between a printer server system 3500 of at least one printer server computer 3520 and client operated computers 3000 in the prior art. Client 3100 operates 3102 client communicating-computer 3000 which is accessibly coupled 3004 to computer readable memory 3006. Client communicating-computer 3000 communicates 3002 with network 3200.
Network 3200 communicates 3528 with at least one printer server computer 3520 of printer server system 3500. Printer server computer 3520 is accessibly coupled 3524 with computer readable memory 3526. At this level of detail, printer 4020 is seen communicating 4022 with printer server system 3500 in a manner which will be clarified shortly.
Note that this is the level of system insight the standard print job flow of data and operations seen in the flowchart of FIG. 1A is built upon. The advantage of this approach is that there is some optimization of the interactions at the printer. The ripping operation, combined with compression, minimizes the task to be done at the printer.
However, there is a readily evident tendency for one printer server computer to be overwhelmed by moderately sized corporate networks engaged in a lot of graphically oriented print jobs. This tendency often is measured in terms of one or two overall printer system performance measures, total pages printed in a given period of time and mean time to complete a print job. When a printer server system becomes overwhelmed, either the total pages printed goes down, or the mean time to complete a print job goes up, or both.
What is needed in this situation is a method limiting required task overhead performed at the printer server system. As stated in the discussion of FIG. 1A, what is needed is to perform part of the rip operation far earlier than at the printer server system, preferably in the client communicating-computers to determine the number of pages to be printed and the page and attributes, such as color usage,
FIG. 1C depicts a block diagram of a network supporting communications between a printer server system of printer server computers and client operated computers in the prior art.
As previously shown in FIG. 1B, client 3100 operates 3102 client communicating-computer 3000 which is accessibly coupled 3004 to computer readable memory 3006. Client communicating-computer 3000 communicates 3002 with network 3200.
Printer server system 3500 contains a printer server computer 3520 communicating 3528 with network 3200. Printer server computer 3520 is accessibly coupled 3524 to computer readable memory 3526 and further communicatively coupled 4022 to printer 4020.
Printer server system 3500 further contains a printer server computer 3540 communicating 3548 with network 3200. Printer server computer 3540 is accessibly coupled 3544 to computer readable memory 3546 and further communicatively coupled 4042 to printer 4040.
Printer server system 3500 further contains a printer server computer 3560 communicating 3568 with network 3200. Printer server computer 3560 is accessibly coupled 3564 to computer readable memory 3566 and further communicatively coupled 4062 to printer 4060.
Printer server system 3500 further contains a printer server computer 3580 communicating 3588 with network 3200. Printer server computer 3580 is accessibly coupled 3584 to computer readable memory 3586 and further communicatively coupled 4082 to printer 4080.
Consider the flowchart of FIG. 1A. Arrow 114 loads network 3200 with the data transfer of the PDL file and optional job ticket from client communicating-computer 3000 to one of the printer server computers, say 3520. If printer 4020 is busy, and has a large backup of activities on printer server computer 3520, it may be preferable for the print job to be transferred to a second capable printer server computer and coupled printer or embedded controller printer. Assume that printer server computer 3540 and printer 4040 are available for such a print job. The print job would then need to be transferred across network 3200 to be processed by printer server computer 3540 and printed by printer 4040. This transfer would again load network 3200.
What is needed in this situation is a method limiting required task overhead performed at the printer server system. As stated in the discussion of FIGS. 1A and 1B, what is needed is to perform part of the rip operation far earlier than at the printer server system, preferably in the client communicating-computers to determine the number of pages to be printed and the total size of the PDL file. What is further needed is a method for limiting unnecessary repetition transferring large print job PDL files across networks.
FIG. 1D depicts a block diagram of a network supporting communications with a printer server system of printer server computers utilizing rip engines in the prior art.
Printer server system 3500 contains a printer server computer 3520 communicating 3528 with network 3200. Printer server computer 3520 is accessibly coupled 3524 to computer readable memory 3526 and further communicatively coupled 3522 to network 3512.
Network 3510 serves as a printer network driven 3518 by printer server computer 3520. Printer 4020 is communicatively coupled 4022 to network 3510. Printer 4040 is communicatively coupled 4042 to network 3510. Printer 4060 is communicatively coupled 4062 to network 3510.
Network 3512 serves as an internal printer server system network coupled 3522 through printer server computer 3520 to the main system network 3200, which provides communication access with the client communicating-computers 3000, which are not shown in this diagram.
Printer server system 3500 further contains a printer server computer 3540 communicatively coupled 3542 to network 3512. Printer server computer 3540 is accessibly coupled 3544 to computer readable memory 3546. Printer server computer 3540 is coupled 3552 with rip engine 3550.
Printer server system 3500 further contains a printer server computer 3560 communicatively coupled 3562 to network 3512. Printer server computer 3560 is accessibly coupled 3564 to computer readable memory 3566. Printer server computer 3560 is coupled 3572 with rip engine 3570 and coupled 3576 with rip engine 3574. Note that couplings 3572 and 3576 may both use a single computer buss to communicate with printer server computer 3560.
Printer server system 3500 further contains a printer server computer 3580 communicating 3588 with network 3200. Printer server computer 3580 is accessibly coupled 3584 to computer readable memory 3586 and further communicatively coupled 4082 to printer 4080. Printer server computer 3580 is coupled 3592 with rip engine 3590, coupled 3596 with rip engine 3594, and further coupled 3600 with rip engine 3598. Note that couplings 3592, 3596 and 3600 may all use a single computer buss to communicate with printer server computer 3560.
Note that there is a new systems component displayed here, the rip engine. A rip engine is a special purpose computing circuit optimized to perform the rip operation. As such it removes a major computational task from the printer server computers, allowing them to focus more thoroughly on the more general purpose tasks such as spooling, compressing and sending the compressed print jobs to the printers.
Consider the flowchart of FIG. 1A in terms of this network 3200 and printer server system 3500. A print job PDL file and optional job ticket can be sent to either printer server computer 3520 or printer server computer 3580 from a client communicating-computer 3000 (not shown).
Assume initially that printer server computer 3580 is the destination of the print job PDL file and job ticket. Once received by printer server computer 3580, spooling and then ripping of the PDL file may be performed. It has been found that, only after ripping, reasonable performance and latency estimates can be made. In certain cases, printer 4080 may be found to be over loaded, and the print job would be processed and printed faster on printer 4020. The primary reason why this has not been previously done, is that both the size of the PDL file and the number of pages to be printed must be known. This information is only available after the ripping operation. Further, by having transferred all the information to printer server computer 3580, it must be forwarded across the network 3200 to printer server computer 3520 to be further printed by printer 4020. This adds significantly to the overhead on network 3200, which would further slow down all other activities requiring communication on network 3200, such as other client communicating-computer requested print jobs.
What is needed in this situation is a method limiting required task overhead performed at the printer server system. As stated in the discussion of FIGS. 1A, 1B and 1C what is needed is to perform part of the rip operation far earlier than at the printer server system, preferably in the client communicating-computers to determine the number of pages to be printed and the total size of the PDL file. What is further needed is a method for limiting unnecessary repetition transferring large print job PDL files across networks.
FIG. 1E depicts a prior art network 3200 further comprised of a collection of smaller networks, each shown with a gateway server communicating with a distinct collection of client computers and communicating as well with network 3200.
Networks comprised of networks are quite common today. Gateway server 3220 may support a wireless network where client computers 3000, 3020 and 3024 communicate with gateway server 3220 which communicates over a wireless physical transport. Gateway server 3240 may support a wireless network where client computers 3030, 3034 and 3038 communicate with gateway server 3240 which communicates over a wireline physical transport. Gateway server 3260 may support a wireless network where client computers 3060, 3064 and 3068 communicate with gateway server 3260 which communicates over a fiber optic wireline physical transport. Gateway server 3280 may support a wireless network where client computers 3080, 3084 and 3088 communicate with gateway server 3280 which communicates over a twisted pair wireline physical transport. Some or all of these gateway servers may possess firewalls.
The different client computers may well have decided different printing requirements as well as different performance capabilities. Certain of these computers may well make a very large demand on the printer server resources, while other machines may possess very little demand. The different component networks may have distinct bandwidth capabilities and loading.
What is needed is a manner by which at least selected client computers may be intelligently directed to send print job requests to the printer server system so as to minimize print job latency or improve overall print job throughput or to balance local network bandwidth and latency issues. Knowing the size and page count of the print job would greatly help in making this estimate.
To summarize, what is needed in this situation is a method limiting required task overhead performed at the printer server system. What is further needed is a method for limiting unnecessary repetitive transferring of large print job PDL files across networks.
The embodiments of this invention solve at least all of these previously discussed needs.
Certain embodiments include a method of print job processing initiated by a client communicating-computer communicating with a printer server system comprising operations performed by the client communicating-computer and operations performed by the printer server system.
The client communicating-computer performs operations including the following: Executing a client application to create a print job request. Using a PDL driver based upon the print job request to create a print job PDL file. Rip pre-processing the print job PDL file to create a smart print job ticket. Sending the smart print job ticket to the printer server system. Sending the print job PDL file to the printer server system.
The printer server system performs operations including the following: Receiving the smart print job ticket to create a received smart print job ticket. Receiving the print job PDL to create a received print job PDL file. Spooling the received print job PDL file based upon the received smart print job ticket to create a spooled PDL file. Ripping the spooled PDL file based upon the received smart job ticket to create a ripped print job. Compressing the ripped print job to create a compressed print job. Sending the compressed print job based upon the received smart job ticket to a printer.
The client communicating-computer performs the rip-preprocessing to create the smart job ticket, which is then advantageously used by the printer server system to optimize spooling, ripping and sending the compressed print job to a printer.
In certain further embodiments, the smart print job ticket includes at least one of the collection comprising a page count, a PDL file size, and an image complexity measure and a page complexity measure. The page count can be advantageously used in directing a compressed print job to a printer. A PDL file size can be advantageously used to guide spooling of a received print job PDL file. A PDL file size can be advantageously used to guide ripping of the spooled print job PDL file. An image complexity measure can be advantageously used to guide the ripping of the spooled PDL file. The page complexity measure can be advantageously used to guide the ripping of the spooled PDL file.
Various combinations of the members of this collection can be further advantageous in guiding at least the spooling, ripping and sending of the compressed print job to a printer. In certain further embodiments, the smart print job ticket comprises the page count, the PDL file size, and the image complexity measure and the page complexity measure.
In certain further embodiments, the page complexity comprises a page size histogram. The page size histogram can be advantageously used in guiding the ripping of the spooled PDL file. In certain further embodiments, the page size histogram comprises a mean page size, which can be further advantageously used to guide ripping the spooled PDL file.
In certain other further embodiments, the image call complexity comprises at least one of the collection comprising an image call count total and an image call count per page histogram. Each of these can be used advantageously to guide the ripping of the spooled PDL file. In certain further embodiments, the image call count per page histogram comprises a mean image call count per page, which can be further advantageously used to guide the ripping of the spooled PDL file.
In certain further embodiments, there is a client computer collection of at least two client communicating-computers, each client communicating-computers communicating with the printer server system. Performing print job processing initiated by each of the client communicating-computer of the client computer collection communicating with the printer server system comprises the operations mentioned above for a single client communicating-computer. These embodiments are advantageous in reducing the workload at the printer server system by performing these tasks (which would otherwise be necessarily performed by the ripping operation) before the print jobs are sent from the client communicating-computers. They are also advantageous in providing the smart job ticket for each sent print job for at least all the reasons discussed above.
In certain further embodiments, sending the print job PDL file further comprises receiving a print job directive from the printer server system and sending the print job PDL file to the printer server system based upon the received print job directive. On the printer server system side, receiving the print job ticket to create a received print job ticket further comprises processing the received print job ticket to create the print job directive; and sending the print job directive to the client communicating-computer. This advantageously supports the printer server system giving the client communicating-computer guidance in the sending of the PDL print file.
In certain further embodiments, the printer server system further comprises a printer gateway collection of at least two printer server computers, each communicating to at least one of the client communicating-computers of the client computer collection. Processing by the printer server system of the received print job ticket to create the print job directive comprises the following. Examining the received print job ticket and the spooling capacity of the print job processors of the print job processor collection to create a print job spooling directive; and inserting the print job spooling directive into the print job directive. This advantageously supports the printer server system directing the spooling activity, through insertion of the spooling directive into the print job directive.
In certain further embodiments, the print job capacity collection of each of the print job processors of the print job processor collection further comprising a printer connectivity capacity. Processing the received print job ticket to create the print job directive by the printer server system comprises the following. Examining the received print job ticket and the printer connectivity capacity of the print job processors of the print job processor collection to create a print job printer directive. Inserting the print job printer directive into the print job directive. This advantageously supports the printer server system directing the ripping activity, through insertion of the print job printer directive into the print job directive.
In certain further embodiments, creating the print job spooling directive further comprises examining the received print job ticket and the spooling capacity and the printer connectivity capacity of the print job processors to create the print job spooling directive. And creating the print job printer directive comprises examining the received print job ticket and the printer connectivity capacity of the print job processors of the print job processor collection and the print job spooling directive to create the print job printer directive. This advantageously makes use of more information than predecessor embodiments, providing greater opportunities to balance the loading of the printing jobs initiated by the client communicating-computers.
In certain further embodiments, the print job capacity collection of each of the print job processors of the print job processor collection further comprises a ripping capacity. Creating the print job directive comprises examining the received print job ticket and the ripping capacity of the print job processors of the print job processor collection to create a print job ripping directive; and inserting the print job ripping directive into the print job directive. This advantageously supports the printer server system directing the ripping activity, through insertion of the print job ripping directive into the print job directive.
In certain further embodiments, creating a print job spooling directive further comprises examining the received print job ticket and the spooling capacity and the printer connectivity capacity and the ripping capacity of the print job processors of the print job processor collection to create a print job spooling directive. Creating a print job ripping directive further comprises examining the received print job ticket and the ripping capacity of the print job processors of the print job processor collection and the spooling directive to create a print job ripping directive. And creating a print job printer directive further comprises examining the received print job ticket and the printer connectivity capacity of the print job processors of the print job processor collection and the print job spooling directive and the print job ripping directive to create a print job printer directive. This advantageously makes use of more information than predecessor embodiments, providing greater opportunities to balance the loading of the printing jobs initiated by the client communicating-computers.
In certain further embodiments, the print job capacity collection of each print job processor further comprises a print job compression capacity. Creating the print job directive further comprises the following. Examining the received print job ticket and the ripping capacity and the print job compression capacity of the print job processors of the print job processor collection to create a print job compression directive; and inserting the print job compression directive into the print job directive. This advantageously supports the printer server system directing the print job compression activity, through insertion of the print job compression directive into the print job directive.
In certain further embodiments, the following refinements are advantageous. Creating a print job spooling directive further comprises examining the received print job ticket and the spooling capacity and the printer connectivity capacity and the ripping capacity and the print job compression capacity of the print job processors of the print job processor collection to create a print job spooling directive. Creating a print job ripping directive comprises examining the received print job ticket and the ripping capacity and the print job compression capacity of the print job processors of the print job processor collection and the spooling directive to create a print job ripping directive. Creating a print job printer directive further comprises examining the received print job ticket and the printer connectivity capacity of the print job processors of the print job processor collection and the print job spooling directive and the print job ripping directive and the print job compression directive to create a print job printer directive. This advantageously makes use of more information than predecessor embodiments, providing greater opportunities to balance the loading of the printing jobs initiated by the client communicating-computers.
In certain further embodiments, the spooling capacity comprises a spooling memory capacity further comprising a maximum spooling memory capacity and an available spooling memory capacity. Such embodiments advantageously present an estimate of current spooling memory. In certain further embodiments, the spooling memory capacity further comprises a committed spooling memory capacity, advantageously presenting an estimate of the near-future spooling memory capacity.
In certain further embodiments, rip pre-processing the print job PDL file further comprises rip pre-processing the print job PDL file to create a print job display list. This advantageously supports the client communicating-computer using the print job display list before the print job has actually been sent to the printer server system, much less been ripped.
In certain embodiments, the client communicating-computer operations are supported by program code segments residing in accessibly coupled computer readable memory to the client communicating-computer. In certain further embodiments, at least one of the printer server system operations are supported by program code segments residing in accessibly coupled memory of a printer server computer contained in the printer server system. In certain further embodiments, at least one of the printer server system operations are supported by program code segments residing in accessibly coupled memory of a printer gateway contained in the printer server system. In certain further embodiments, at least one printer server system operation is supported by a program code segment residing in accessibly coupled computer readable memory of a print job processor contained in the printer server system.
These and other advantages of the present invention will become apparent upon reading the following detailed descriptions and studying the various figures of the drawings.